home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / Music / PLAY / MultiPlayer / MultiPlayer132Src.lha / fcoplay.asm < prev    next >
Assembly Source File  |  1992-09-14  |  25KB  |  801 lines

  1. * MultiPlayer
  2. * Copyright (C) 1992 Bryan Ford
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation; either version 2 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with this program; if not, write to the Free Software
  16. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17. *
  18. * I (the author of MultiPlayer) can be contacted on the Internet at
  19. * "bryan.ford@m.cc.utah.edu".  See "Player.doc" for other addresses.
  20. *
  21. * Note:  This playroutine was not originally written by me.  In general
  22. * these playroutines are public domain, so I am bringing the versions
  23. * modified for MultiPlayer under the General Public License.  In the
  24. * few cases of already-copyrighted playroutines, the above copyright
  25. * notice applies only to the parts of the file written by me.
  26. *
  27. * $Id: fcoplay.asm,v 4.1 92/06/21 11:13:57 BAF Exp Locker: BAF $
  28. *
  29.  
  30.         include "player.i"
  31.  
  32.         xdef    fcostart
  33.  
  34.         code    text,chip
  35.  
  36. fcostart:
  37.         plstartret 9$
  38.  
  39. 2$      movem.l d2-d7/a2-a6,-(sp)
  40.         jsr     init_music(pc)
  41.         movem.l (sp)+,d2-d7/a2-a6
  42.         rts
  43.  
  44. 3$      movem.l d2-d7/a2-a6,-(sp)
  45.         jsr     play(pc)
  46.         movem.l (sp)+,d2-d7/a2-a6
  47.         rts
  48.  
  49.         cnop    0,4
  50.         dc.l    gmod_Hook
  51. 9$      gmodnop
  52.         jmp     2$(pc)                  ; StartMusic
  53.         gmodnop                         ; StopMusic
  54.         gmodnop
  55.         gmodnop
  56.         gmodnop
  57.         gmodnop
  58.         gmodnop
  59.         gmodnop
  60.         gmodnop
  61.         gmodnop
  62.         gmodnop
  63.         gmodnop
  64.         gmodnop
  65.         gmodnop
  66.         gmodq   -1                      ; GetFrequency
  67.         jmp     3$(pc)                  ; TimerTick
  68.         lea     name(pc),a0             ; GetMakerName
  69.         move.l  a0,d0
  70.         rts
  71.  
  72. *********************************************************
  73. **   A debugged amd optimized replay routine for the   **
  74. **         Amiga FUTURE COMPOSER  V1.0 - V1.3          **
  75. *********************************************************
  76.  
  77. init_music:
  78.         move.w #1,onoff
  79.         bset #1,$bfe001
  80.         lea 100(a0),a1
  81.         move.l a1,seqpoint
  82.         move.l a0,a1
  83.         add.l 8(a0),a1
  84.         move.l a1,patpoint
  85.         move.l a0,a1
  86.         add.l 16(a0),a1
  87.         move.l a1,frqpoint
  88.         move.l a0,a1
  89.         add.l 24(a0),a1
  90.         move.l a1,volpoint
  91.         move.l 4(a0),d0
  92.         divu #13,d0
  93.  
  94.         lea 40(a0),a1
  95.         lea soundinfo+4(pc),a2
  96.         moveq #10-1,d1
  97. initloop:
  98.         move.w (a1)+,(a2)+
  99.         move.l (a1)+,(a2)+
  100.         addq.w #4,a2
  101.         dbf d1,initloop
  102.         moveq #0,d2
  103.         move.l a0,d1
  104.         add.l 32(a0),d1
  105.         sub.l #waveforms,d1
  106.         lea soundinfo(pc),a0
  107.         move.l d1,(a0)+
  108.         moveq #9-1,d3
  109. initloop1:
  110.         move.w (a0),d2
  111.         add.l d2,d1
  112.         add.l d2,d1
  113.         addq.w #6,a0
  114.         move.l d1,(a0)+
  115.         dbf d3,initloop1
  116.  
  117.         move.l seqpoint(pc),a0
  118.         moveq #0,d2
  119.         move.b 12(a0),d2                ;get replay speed
  120.         bne.s speedok
  121.         move.b #3,d2                    ;set default speed
  122. speedok:
  123.         move.w d2,respcnt               ;init repspeed counter
  124.         move.w d2,repspd
  125. init2:
  126.         clr.w audtemp
  127.         move.w #$000f,$dff096           ;disable audio dma
  128.         move.w #$0780,$dff09a           ;disable audio irq
  129.         moveq #0,d7
  130.         mulu #13,d0
  131.         moveq #4-1,d6                   ;number of soundchannels-1
  132.         lea v1data(pc),a0               ;point to 1st voice data area
  133.         lea silent(pc),a1
  134.         lea chandata(pc),a2
  135. initloop2:
  136.         move.l a1,10(a0)
  137.         move.l a1,18(a0)
  138.         clr.l 14(a0)
  139.         clr.b 45(a0)
  140.         clr.b 47(a0)
  141.         clr.w 8(a0)
  142.         clr.l 48(a0)
  143.         move.b #$01,23(a0)
  144.         move.b #$01,24(a0)
  145.         clr.b 25(a0)
  146.         clr.l 26(a0)
  147.         clr.w 30(a0)
  148.         moveq #$00,d3
  149.         move.w (a2)+,d1
  150.         move.w (a2)+,d3
  151.         divu #$0003,d3
  152.         moveq #0,d4
  153.         bset d3,d4
  154.         move.w d4,32(a0)
  155.         mulu #$0003,d3
  156.         andi.l #$00ff,d3
  157.         andi.l #$00ff,d1
  158.         addi.l #$dff0a0,d1
  159.         move.l d1,a6
  160.         move.l #$0000,(a6)
  161.         move.w #$0100,4(a6)
  162.         move.w #$0000,6(a6)
  163.         move.w #$0000,8(a6)
  164.         move.l d1,60(a0)
  165.         clr.w 64(a0)
  166.         move.l seqpoint(pc),(a0)
  167.         move.l seqpoint(pc),52(a0)
  168.         add.l d0,52(a0)
  169.         add.l d3,52(a0)
  170.         add.l d7,(a0)
  171.         add.l d3,(a0)
  172.         move.w #$000d,6(a0)
  173.         move.l (a0),a3
  174.         move.b (a3),d1
  175.         andi.l #$00ff,d1
  176.         lsl.w #6,d1
  177.         move.l patpoint(pc),a4
  178.         adda.w d1,a4
  179.         move.l a4,34(a0)
  180.         clr.l 38(a0)
  181.         move.b #$02,42(a0)
  182.         move.b 1(a3),44(a0)
  183.         move.b 2(a3),22(a0)
  184.         clr.b 43(a0)
  185.         clr.b 45(a0)
  186.         clr.w 56(a0)
  187.         lea $4a(a0),a0          ;point to next voice's data area
  188.         dbf d6,initloop2
  189.         rts
  190.  
  191.  
  192. play:
  193.         lea audtemp(pc),a5
  194.         tst.w 8(a5)
  195.         bne.s music_on
  196.         rts
  197. music_on:
  198.         subq.w #1,4(a5)                 ;decrease replayspeed counter
  199.         bne.s nonewnote
  200.         move.w 6(a5),4(a5)              ;restore replayspeed counter
  201.         moveq #0,d5
  202.         moveq #6,d6
  203.         lea v1data(pc),a0               ;point to voice1 data area
  204.         bsr.l new_note
  205.         lea v2data(pc),a0               ;point to voice2 data area
  206.         bsr.l new_note
  207.         lea v3data(pc),a0               ;point to voice3 data area
  208.         bsr.l new_note
  209.         lea v4data(pc),a0               ;point to voice4 data area
  210.         bsr.l new_note
  211. nonewnote:
  212.         clr.w (a5)
  213.         lea $dff000,a6
  214.         lea v1data(pc),a0
  215.         bsr.l effects
  216.         move.l d0,$a6(a6)
  217.         lea v2data(pc),a0
  218.         bsr.l effects
  219.         move.l d0,$b6(a6)
  220.         lea v3data(pc),a0
  221.         bsr.l effects
  222.         move.l d0,$c6(a6)
  223.         lea v4data(pc),a0
  224.         bsr.l effects
  225.         move.l d0,$d6(a6)
  226.         lea v1data(pc),a0
  227.         move.l 68+0*74(a0),a1         ;get samplepointer
  228.         adda.w 64+0*74(a0),a1         ;add repeat_start
  229.         move.l 68+1*74(a0),a2
  230.         adda.w 64+1*74(a0),a2
  231.         move.l 68+2*74(a0),a3
  232.         adda.w 64+2*74(a0),a3
  233.         move.l 68+3*74(a0),a4
  234.         adda.w 64+3*74(a0),a4
  235.         move.w 66+0*74(a0),d1         ;get sound lengths
  236.         move.w 66+1*74(a0),d2
  237.         move.w 66+2*74(a0),d3
  238.         move.w 66+3*74(a0),d4
  239.         moveq #2,d0
  240.         moveq #0,d5
  241.         move.w (a5),d7
  242.         ori.w #$8000,d7                 ;set/clr bit = 1
  243.         move.w d7,$dff096               ;enable audio dma
  244. chan1:
  245.         lea v1data+72(pc),a0
  246.         move.w (a0),d7
  247.         beq.s chan2
  248.         subq.w #1,(a0)
  249.         cmp.w d0,d7
  250.         bne.s chan2
  251.         move.w d5,(a0)
  252.         move.l a1,$a0(a6)               ;set soundstart
  253.         move.w d1,$a4(a6)               ;set soundlength
  254. chan2:
  255.         lea v2data+72(pc),a0
  256.         move.w (a0),d7
  257.         beq.s chan3
  258.         subq.w #1,(a0)
  259.         cmp.w d0,d7
  260.         bne.s chan3
  261.         move.w d5,(a0)
  262.         move.l a2,$b0(a6)
  263.         move.w d2,$b4(a6)
  264. chan3:
  265.         lea v3data+72(pc),a0
  266.         move.w (a0),d7
  267.         beq.s chan4
  268.         subq.w #1,(a0)
  269.         cmp.w d0,d7
  270.         bne.s chan4
  271.         move.w d5,(a0)
  272.         move.l a3,$c0(a6)
  273.         move.w d3,$c4(a6)
  274. chan4:
  275.         lea v4data+72(pc),a0
  276.         move.w (a0),d7
  277.         beq.s endplay
  278.         subq.w #1,(a0)
  279.         cmp.w d0,d7
  280.         bne.s endplay
  281.         move.w d5,(a0)
  282.         move.l a4,$d0(a6)
  283.         move.w d4,$d4(a6)
  284. endplay:
  285.         rts
  286.  
  287. new_note:
  288.         move.l 34(a0),a1
  289.         adda.w 40(a0),a1
  290.         cmp.w #64,40(a0)
  291.         bne.l samepat
  292.         move.w d5,40(a0)
  293.         move.l (a0),a2
  294.         adda.w 6(a0),a2         ;point to next sequence row
  295.         cmpa.l 52(a0),a2        ;is it the end?
  296.         bne.s notend
  297.         move.w d5,6(a0)         ;yes!
  298.         move.l (a0),a2          ;point to first sequence
  299. notend:
  300.         lea spdtemp(pc),a3
  301.         moveq #1,d1
  302.         addq.b #1,(a3)
  303.         cmpi.b #5,(a3)
  304.         bne.s nonewspd
  305.         move.b d1,(a3)
  306.         move.b 12(a2),d1        ;get new replay speed
  307.         beq.s nonewspd
  308.         move.w d1,2(a3)         ;store in counter
  309.         move.w d1,4(a3)
  310. nonewspd:
  311.         move.b (a2)+,d1         ;pattern to play
  312.         move.b (a2)+,44(a0)     ;transpose value
  313.         move.b (a2)+,22(a0)     ;soundtranspose value
  314.         lsl.w d6,d1
  315.         move.l patpoint(pc),a1  ;get pattern pointer
  316.         add.w d1,a1
  317.         move.l a1,34(a0)
  318.         addi.w #$000d,6(a0)
  319. samepat:
  320.         move.b 1(a1),d1         ;get info byte
  321.         move.b (a1)+,d0         ;get note
  322.         bne.s ww1
  323.         andi.w #%11000000,d1
  324.         beq.s noport
  325.         bra.s ww11
  326. ww1:
  327.         move.w d5,56(a0)
  328. ww11:
  329.         move.b d5,47(a0)
  330.         ;move.b (a1),31(a0)
  331.  
  332.                         ;31(a0) = portamento/instr. info
  333.                                 ;bit 7 = portamento on
  334.                                 ;bit 6 = portamento off
  335.                                 ;bit 5-0 = instrument number
  336.                         ;47(a0) = portamento value
  337.                                 ;bit 7-5 = always zero
  338.                                 ;bit 4 = up/down
  339.                                 ;bit 3-0 = value
  340. t_porton:
  341.         btst #7,d1
  342.         beq.s noport
  343.         move.b 2(a1),47(a0)
  344. noport:
  345.         andi.w #$007f,d0
  346.         beq.l nextnote
  347.         move.b d0,8(a0)
  348.         move.b (a1),d1
  349.         move.b d1,9(a0)
  350.         move.w 32(a0),d3
  351.         or.w d3,(a5)
  352.         move.w d3,$dff096
  353.         andi.w #$003f,d1        ;max 64 instruments
  354.         add.b 22(a0),d1         ;add soundtranspose
  355.         move.l volpoint(pc),a2
  356.         lsl.w d6,d1
  357.         adda.w d1,a2
  358.         move.w d5,16(a0)
  359.         move.b (a2),23(a0)
  360.         move.b (a2)+,24(a0)
  361.         moveq #0,d1
  362.         move.b (a2)+,d1
  363.         move.b (a2)+,27(a0)
  364.         move.b #$40,46(a0)
  365.         move.b (a2),28(a0)
  366.         move.b (a2)+,29(a0)
  367.         move.b (a2)+,30(a0)
  368.         move.l a2,10(a0)
  369.         move.l frqpoint(pc),a2
  370.         lsl.w d6,d1
  371.         adda.w d1,a2
  372.         move.l a2,18(a0)
  373.         move.w d5,50(a0)
  374.         move.b d5,25(a0)
  375.         move.b d5,26(a0)
  376. nextnote:
  377.         addq.w #2,40(a0)
  378.         rts
  379.  
  380. effects:
  381.         moveq #0,d7
  382. testsustain:
  383.         tst.b 26(a0)            ;is sustain counter = 0
  384.         beq.s sustzero
  385.         subq.b #1,26(a0)        ;if no, decrease counter
  386.         bra.l volufx
  387. sustzero:               ;next part of effect sequence
  388.         move.l 18(a0),a1        ;can be executed now.
  389.         adda.w 50(a0),a1
  390. testeffects:
  391.         cmpi.b #$e1,(a1)        ;e1 = end of freqseq sequence
  392.         beq.l volufx
  393.         move.b (a1),d0
  394.         cmpi.b #$e0,d0          ;e0 = loop to other part of sequence
  395.         bne.s testnewsound
  396.         move.b 1(a1),d1         ;loop to start of sequence + 1(a1)
  397.         andi.w #$003f,d1
  398.         move.w d1,50(a0)
  399.         move.l 18(a0),a1
  400.         adda.w d1,a1
  401.         move.b (a1),d0
  402. testnewsound:
  403.         cmpi.b #$e2,d0          ;e2 = set waveform
  404.         bne.s teste4
  405.         move.w 32(a0),d1
  406.         or.w d1,(a5)
  407.         move.w d1,$dff096
  408.         moveq #0,d0
  409.         move.b 1(a1),d0
  410.         lea soundinfo(pc),a4
  411.         add.w d0,d0
  412.         move.w d0,d1
  413.         lsl.w #2,d1
  414.         add.w d1,d0
  415.         adda.w d0,a4
  416.         move.l 60(a0),a3
  417.         move.l (a4),d1
  418.         add.l #waveforms,d1
  419.         move.l d1,(a3)
  420.         move.l d1,68(a0)
  421.         move.w 4(a4),4(a3)
  422.         move.l 6(a4),64(a0)
  423.         move.w #$0003,72(a0)
  424.         clr.w 16(a0)
  425.         move.b #$01,23(a0)
  426.         addq.w #2,50(a0)
  427.         bra.l transpose
  428. teste4:
  429.         cmpi.b #$e4,d0
  430.         bne.s testpatjmp
  431.         moveq #0,d0
  432.         move.b 1(a1),d0
  433.         lea soundinfo(pc),a4
  434.         add.w d0,d0
  435.         move.w d0,d1
  436.         lsl.w #2,d1
  437.         add.w d1,d0
  438.         adda.w d0,a4
  439.         move.l 60(a0),a3
  440.         move.l (a4),d1
  441.         add.l #waveforms,d1
  442.         move.l d1,(a3)
  443.         move.l d1,68(a0)
  444.         move.w 4(a4),4(a3)
  445.         move.l 6(a4),64(a0)
  446.         move.w #$0003,72(a0)
  447.         addq.w #2,50(a0)
  448.         bra.s transpose
  449. testpatjmp:
  450.         cmpi.b #$e7,d0
  451.         bne.s testnewsustain
  452.         moveq #0,d0
  453.         move.b 1(a1),d0
  454.         lsl.w d6,d0
  455.         move.l frqpoint(pc),a1
  456.         adda.w d0,a1
  457.         move.l a1,18(a0)
  458.         move.w d7,50(a0)
  459.         bra.l testeffects
  460. testnewsustain:
  461.         cmpi.b #$e8,d0          ;e8 = set sustain time
  462.         bne.s testnewvib
  463.         move.b 1(a1),26(a0)
  464.         addq.w #2,50(a0)
  465.         bra.l testsustain
  466. testnewvib:
  467.         cmpi.b #$e3,(a1)+
  468.         bne.s transpose
  469.         addq.w #3,50(a0)
  470.         move.b (a1)+,27(a0)
  471.         move.b (a1),28(a0)
  472. transpose:
  473.         move.l 18(a0),a1
  474.         adda.w 50(a0),a1
  475.         move.b (a1),43(a0)
  476.         addq.w #1,50(a0)
  477.  
  478. volufx:
  479.         tst.b 25(a0)
  480.         beq.s volsustzero
  481.         subq.b #1,25(a0)
  482.         bra.s calcperiod
  483. volsustzero:
  484.         subq.b #1,23(a0)
  485.         bne.s calcperiod
  486.         move.b 24(a0),23(a0)
  487. volu_cmd:
  488.         move.l 10(a0),a1
  489.         adda.w 16(a0),a1
  490.         move.b (a1),d0
  491.         cmpi.b #$e8,d0
  492.         bne.s testvoluend
  493.         addq.w #2,16(a0)
  494.         move.b 1(a1),25(a0)
  495.         bra.s calcperiod
  496. testvoluend:
  497.         cmpi.b #$e1,d0
  498.         beq.s calcperiod
  499.         cmpi.b #$e0,d0
  500.         bne.s setvolume
  501.         move.b 1(a1),d0
  502.         andi.w #$003f,d0
  503.         subq.b #5,d0
  504.         move.w d0,16(a0)
  505.         bra.s volu_cmd
  506. setvolume:
  507.         move.b (a1),45(a0)
  508.         addq.w #1,16(a0)
  509.  
  510. calcperiod:
  511.         move.b 43(a0),d0
  512.         bmi.s lockednote
  513.         add.b 8(a0),d0
  514.         add.b 44(a0),d0
  515. lockednote:
  516.         moveq #$7f,d1
  517.         and.l d1,d0
  518.         lea periods(pc),a1
  519.         add.w d0,d0
  520.         move.w d0,d1
  521.         adda.w d0,a1
  522.         move.w (a1),d0
  523.  
  524.         move.b 46(a0),d7
  525.         tst.b 30(a0)            ;vibrato_delay = zero ?
  526.         beq.s vibrator
  527.         subq.b #1,30(a0)
  528.         bra.s novibrato
  529. vibrator:
  530.         moveq #5,d2
  531.         move.b d1,d5
  532.         move.b 28(a0),d4
  533.         add.b d4,d4
  534.         move.b 29(a0),d1
  535.         tst.b d7
  536.         bpl.s vib1
  537.         btst #0,d7
  538.         bne.s vib4
  539. vib1:
  540.         btst d2,d7
  541.         bne.s vib2
  542.         sub.b 27(a0),d1
  543.         bcc.s vib3
  544.         bset d2,d7
  545.         moveq #0,d1
  546.         bra.s vib3
  547. vib2:
  548.         add.b 27(a0),d1
  549.         cmp.b d4,d1
  550.         bcs.s vib3
  551.         bclr d2,d7
  552.         move.b d4,d1
  553. vib3:
  554.         move.b d1,29(a0)
  555. vib4:
  556.         lsr.b #1,d4
  557.         sub.b d4,d1
  558.         bcc.s vib5
  559.         subi.w #$0100,d1
  560. vib5:
  561.         addi.b #$a0,d5
  562.         bcs.s vib7
  563. vib6:
  564.         add.w d1,d1
  565.         addi.b #$18,d5
  566.         bcc.s vib6
  567. vib7:
  568.         add.w d1,d0
  569. novibrato:
  570.         eori.b #$01,d7
  571.         move.b d7,46(a0)
  572.  
  573.         ; do the portamento thing
  574.         moveq #0,d1
  575.         move.b 47(a0),d1        ;get portavalue
  576.         beq.s addporta          ;0=no portamento
  577.         cmpi.b #$1f,d1
  578.         bls.s portaup
  579. portadown:
  580.         andi.w #$1f,d1
  581.         neg.w d1
  582. portaup:
  583.         sub.w d1,56(a0)
  584. addporta:
  585.         add.w 56(a0),d0
  586.         cmpi.w #$0070,d0
  587.         bhi.s nn1
  588.         move.w #$0071,d0
  589. nn1:
  590.         cmpi.w #$1ac0,d0
  591.         bls.s nn2
  592.         move.w #$1ac0,d0
  593. nn2:
  594.         swap d0
  595.         move.b 45(a0),d0
  596.         rts
  597.  
  598.  
  599.  
  600. v1data:  ds.b 64     ;voice 1 data area
  601. offset1: ds.b 02     ;is added to start of sound
  602. ssize1:  ds.b 02     ;length of sound
  603. start1:  ds.b 06     ;start of sound
  604.  
  605. v2data:  ds.b 64     ;voice 2 data area
  606. offset2: ds.b 02
  607. ssize2:  ds.b 02
  608. start2:  ds.b 06
  609.  
  610. v3data:  ds.b 64     ;voice 3 data area
  611. offset3: ds.b 02
  612. ssize3:  ds.b 02
  613. start3:  ds.b 06
  614.  
  615. v4data:  ds.b 64     ;voice 4 data area
  616. offset4: ds.b 02
  617. ssize4:  ds.b 02
  618. start4:  ds.b 06
  619.  
  620. audtemp: dc.w 0         ;dmacon
  621. spdtemp: dc.w 0
  622. respcnt: dc.w 0         ;replay speed counter
  623. repspd:  dc.w 0         ;replay speed counter temp
  624. onoff:   dc.w 0         ;music on/off flag.
  625.  
  626. chandata: dc.l $00000000,$00100003,$00200006,$00300009
  627. seqpoint: dc.l 0
  628. patpoint: dc.l 0
  629. frqpoint: dc.l 0
  630. volpoint: dc.l 0
  631.  
  632.  
  633. even
  634. silent: dc.w $0100,$0000,$0000,$00e1
  635.  
  636. periods dc.w $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
  637.         dc.w $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
  638.         dc.w $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
  639.         dc.w $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
  640.         dc.w $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
  641.         dc.w $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  642.         dc.w $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  643.         dc.w $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
  644.         dc.w $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
  645.         dc.w $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
  646.         dc.w $10d0,$0fe0,$0f00,$0e28
  647.  
  648. soundinfo:
  649. ;offset.l , sound-length.w , start-offset.w , repeat-length.w
  650.  
  651. ;reserved for samples
  652.         dc.w $0000,$0000,$0000,$0000,$0001
  653.         dc.w $0000,$0000,$0000,$0000,$0001
  654.         dc.w $0000,$0000,$0000,$0000,$0001
  655.         dc.w $0000,$0000,$0000,$0000,$0001
  656.         dc.w $0000,$0000,$0000,$0000,$0001
  657.         dc.w $0000,$0000,$0000,$0000,$0001
  658.         dc.w $0000,$0000,$0000,$0000,$0001
  659.         dc.w $0000,$0000,$0000,$0000,$0001
  660.         dc.w $0000,$0000,$0000,$0000,$0001
  661.         dc.w $0000,$0000,$0000,$0000,$0001
  662. ;reserved for synth souns
  663.         dc.w $0000,$0000,$0010,$0000,$0010
  664.         dc.w $0000,$0020,$0010,$0000,$0010
  665.         dc.w $0000,$0040,$0010,$0000,$0010
  666.         dc.w $0000,$0060,$0010,$0000,$0010
  667.         dc.w $0000,$0080,$0010,$0000,$0010
  668.         dc.w $0000,$00a0,$0010,$0000,$0010
  669.         dc.w $0000,$00c0,$0010,$0000,$0010
  670.         dc.w $0000,$00e0,$0010,$0000,$0010
  671.         dc.w $0000,$0100,$0010,$0000,$0010
  672.         dc.w $0000,$0120,$0010,$0000,$0010
  673.         dc.w $0000,$0140,$0010,$0000,$0010
  674.         dc.w $0000,$0160,$0010,$0000,$0010
  675.         dc.w $0000,$0180,$0010,$0000,$0010
  676.         dc.w $0000,$01a0,$0010,$0000,$0010
  677.         dc.w $0000,$01c0,$0010,$0000,$0010
  678.         dc.w $0000,$01e0,$0010,$0000,$0010
  679.         dc.w $0000,$0200,$0010,$0000,$0010
  680.         dc.w $0000,$0220,$0010,$0000,$0010
  681.         dc.w $0000,$0240,$0010,$0000,$0010
  682.         dc.w $0000,$0260,$0010,$0000,$0010
  683.         dc.w $0000,$0280,$0010,$0000,$0010
  684.         dc.w $0000,$02a0,$0010,$0000,$0010
  685.         dc.w $0000,$02c0,$0010,$0000,$0010
  686.         dc.w $0000,$02e0,$0010,$0000,$0010
  687.         dc.w $0000,$0300,$0010,$0000,$0010
  688.         dc.w $0000,$0320,$0010,$0000,$0010
  689.         dc.w $0000,$0340,$0010,$0000,$0010
  690.         dc.w $0000,$0360,$0010,$0000,$0010
  691.         dc.w $0000,$0380,$0010,$0000,$0010
  692.         dc.w $0000,$03a0,$0010,$0000,$0010
  693.         dc.w $0000,$03c0,$0010,$0000,$0010
  694.         dc.w $0000,$03e0,$0010,$0000,$0010
  695.         dc.w $0000,$0400,$0008,$0000,$0008
  696.         dc.w $0000,$0410,$0008,$0000,$0008
  697.         dc.w $0000,$0420,$0008,$0000,$0008
  698.         dc.w $0000,$0430,$0008,$0000,$0008
  699.         dc.w $0000,$0440,$0008,$0000,$0008
  700.         dc.w $0000,$0450,$0008,$0000,$0008
  701.         dc.w $0000,$0460,$0008,$0000,$0008
  702.         dc.w $0000,$0470,$0008,$0000,$0008
  703.         dc.w $0000,$0480,$0010,$0000,$0010
  704.         dc.w $0000,$04a0,$0008,$0000,$0008
  705.         dc.w $0000,$04b0,$0010,$0000,$0010
  706.         dc.w $0000,$04d0,$0010,$0000,$0010
  707.         dc.w $0000,$04f0,$0008,$0000,$0008
  708.         dc.w $0000,$0500,$0008,$0000,$0008
  709.         dc.w $0000,$0510,$0018,$0000,$0018
  710.  
  711.  
  712. waveforms:
  713.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  714.         dc.w $3f37,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  715.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  716.         dc.w $c037,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  717.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  718.         dc.w $c0b8,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  719.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  720.         dc.w $c0b8,$b027,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  721.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  722.         dc.w $c0b8,$b0a8,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  723.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  724.         dc.w $c0b8,$b0a8,$a017,$0f07,$ff07,$0f17,$1f27,$2f37
  725.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  726.         dc.w $c0b8,$b0a8,$a098,$0f07,$ff07,$0f17,$1f27,$2f37
  727.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  728.         dc.w $c0b8,$b0a8,$a098,$9007,$ff07,$0f17,$1f27,$2f37
  729.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  730.         dc.w $c0b8,$b0a8,$a098,$9088,$ff07,$0f17,$1f27,$2f37
  731.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  732.         dc.w $c0b8,$b0a8,$a098,$9088,$8007,$0f17,$1f27,$2f37
  733.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  734.         dc.w $c0b8,$b0a8,$a098,$9088,$8088,$0f17,$1f27,$2f37
  735.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  736.         dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9017,$1f27,$2f37
  737.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  738.         dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$1f27,$2f37
  739.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  740.         dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a027,$2f37
  741.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  742.         dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$2f37
  743.         dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  744.         dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$b037
  745.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  746.         dc.w $7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  747.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  748.         dc.w $817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  749.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  750.         dc.w $8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  751.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  752.         dc.w $8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  753.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  754.         dc.w $8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  755.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  756.         dc.w $8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  757.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  758.         dc.w $8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  759.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  760.         dc.w $8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f
  761.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  762.         dc.w $8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f
  763.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  764.         dc.w $8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f
  765.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  766.         dc.w $8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f
  767.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  768.         dc.w $8181,$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f
  769.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  770.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f
  771.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  772.         dc.w $8181,$8181,$8181,$8181,$8181,$8181,$817f,$7f7f
  773.         dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  774.         dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$7f7f
  775.         dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  776.         dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$807f
  777.         dc.w $8080,$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f
  778.         dc.w $8080,$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f
  779.         dc.w $8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  780.         dc.w $8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  781.         dc.w $8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  782.         dc.w $8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  783.         dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  784.         dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  785.         dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  786.         dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  787.         dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  788.         dc.w $4545,$797d,$7a77,$7066,$6158,$534d,$2c20,$1812
  789.         dc.w $04db,$d3cd,$c6bc,$b5ae,$a8a3,$9d99,$938e,$8b8a
  790.         dc.w $4545,$797d,$7a77,$7066,$5b4b,$4337,$2c20,$1812
  791.         dc.w $04f8,$e8db,$cfc6,$beb0,$a8a4,$9e9a,$9594,$8d83
  792.         dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  793.         dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  794.         dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  795.         dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  796.         dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  797.  
  798. name    dc.b    "Future Composer 1.3",0
  799.  
  800.         end
  801.